<?php
require_once('Debug.class.php');
class Actualizacion
{
	var $Tabla;
    var $Clave;

    var $Campo_estado;
    var $Valor_estado = 1;

    var $conn;
    var $query;

    var $Vars = array();
    var $Id;

    var $Debug = 0;

    function Actualizar($id)
    {
    	$this->Borrar($id);
    }
    function Borrar($id)
    {
    	if (!empty($this->Campo_estado))
        {
			$sql = 'UPDATE '.$this->Tabla.' SET '.$this->Campo_estado.' = '.mysql_escape_string($this->Valor_estado).' WHERE '.$this->Clave.' = "'.mysql_escape_string($id).'"';
        } else {
			$sql = 'DELETE FROM '.$this->Tabla.' WHERE '.$this->Clave.' = "'.mysql_escape_string($id).'"';
        }
        @mysql_query($sql, $this->conn);
        $error     = @mysql_error($this->conn);
        if (!empty($error))
        {
        	if ($this->Debug)
			{
	            Debug::Mostrar("Se ha producido un error en una consulta a la Base de Datos - Error 1: Borrar()<br>".$sql."<br>".$error);
	        }
	        return 0;
        }
    }
    function Editar($VARS = array(), $id, $atributos)
    {
    	$this->Vars   = $VARS;
        $this->Id     = $id;
        $this->Campos = $atributos;
        if (count($this->Campos) < 1)
        {
        	if ($this->Debug)
			{
	            Debug::Mostrar("No se pudo recibir los campos a ser modificados");
	        }
	        return 0;
        }

    	if (count($this->Vars) > 0)
        {
	        foreach($this->Vars as $campo => $valor)
	        {
	            $nuevo->$campo = $valor;
	        }
            return $nuevo;
        }
        return 0;
    }

    function Insertar($VARS = array(), $atributos)
    {
    	$this->Vars   = $VARS;
        $this->Id     = $id;
        $this->Campos = $atributos;
        if (count($this->Campos) < 1)
        {
        	if ($this->Debug)
			{
            	Debug::Mostrar("No se pudo recibir los campos a ser modificados");
            }
            return 0;
        }

    	if (count($this->Vars) > 0)
        {
	        foreach($this->Vars as $campo => $valor)
	        {
	            $nuevo->$campo = $valor;
	        }
            return $nuevo;
        }
        return 0;
    }

    function Guardar($H)
    {
    	$n       = array();
    	$lista = array();
        $sql     = '';
        $primero = 0;
        foreach ($this->Campos as $i => $campo_tabla)
        {
        	$campo = $campo_tabla;
        	if ($i != "0" && intval($i) == 0)
			{
        		$campo = $i;
        	}
        	if (!isset($H->$campo))
            {
            	$lista[$i] = $campo_tabla;
            	continue;
            }
            $this->Campos_no_vacios[] = $campo_tabla;
        }
        if (count($this->Campos_no_vacios) > 0)
		{
			$j = 0;
	        foreach ($this->Campos_no_vacios as $i => $campo_tabla)
	        {
	        	$campo = $campo_tabla;
	        	if ($i != "0" && intval($i) == 0)
				{
	        		$campo = $i;
	        	}
				$sql .= $campo_tabla." = '".mysql_escape_string($H->$campo)."'";

	            if ($j < count($this->Campos_no_vacios)-1)
	            {
	           		$sql .= ', ';
	            }
	            $j++;
	        }
	    }
        if (count($lista) > 0)
		{
			if ($this->Debug)
			{
				Debug::Mostrar("Warning: No se pueden mapear todos los campos para guardar.", 0);
				$this->MostrarMapeoDatos($H, $lista);
			}
        }
		unset($H);
        if ($sql != '')
        {
	        $sql = "UPDATE ".$this->Tabla." SET ".$sql." WHERE ".$this->Clave." = '".mysql_escape_string($this->Id)."'";
	        @mysql_query($sql, $this->conn);
	        $error     = @mysql_error($this->conn);
			if ($this->Debug)
        	{
        		Debug::Mostrar("SQL: " . $sql, true);
        	}
	        if (!empty($error))
	        {
	        	if ($this->Debug)
				{
	            	Debug::Mostrar("Se ha producido un error en una consulta a la Base de Datos - Error 1: Editar()<br><br>".$sql."<br><br>".$error);
	            }
	            return 0;
	        }
        } elseif ($this->Debug) {
            Debug::Mostrar("No se han podido recibir los datos a guardar, verifiquelos - Error: Editar()<br>".$sql);
        } else {
        	return 0;
		}
    }
    function Guardar_insercion($H)
    {
    	$n = array();
    	$lista = array();
        $sql = '';
        $primero = 0;
        foreach ($this->Campos as $i => $campo_tabla)
        {
        	$campo = $campo_tabla;
        	if ($i != "0" && intval($i) == 0)
			{
        		$campo = $i;
        	}
        	if (!isset($H->$campo))
            {
            	$lista[$i] = $campo_tabla;
            	continue;
            }
            $this->Campos_no_vacios[$i] = $campo_tabla;
        }
        if (count($this->Campos_no_vacios) > 0)
		{
			$j = 0;
	        foreach ($this->Campos_no_vacios as $i => $campo_tabla)
	        {
	        	$campo = $campo_tabla;
	        	if ($i != "0" && intval($i) == 0)
				{
	        		$campo = $i;
	        	}
				$campos  .= $campo_tabla;
				$valores .= "'".mysql_escape_string($H->$campo)."'";

	            if ($j < count($this->Campos_no_vacios)-1)
	            {
	                $campos .= ', ';
	                $valores .= ', ';
	            }
	            $j++;
	        }
        }
        if (count($lista) > 0)
		{
			if ($this->Debug)
			{
				Debug::Mostrar("Warning: No se pueden mapear todos los campos para guardar.", 0);
				$this->MostrarMapeoDatos($H, $lista);
			}
        }
		unset($H);
        if ($campos != '' && $valores != '')
        {
	        $sql = "INSERT INTO ".$this->Tabla." (".$campos.") VALUES (".$valores.")";
	        @mysql_query($sql, $this->conn);
            $this->inserted_id = mysql_insert_id($this->conn);
	        $error     = @mysql_error($this->conn);
			if ($this->Debug)
        	{
        		Debug::Mostrar("SQL: " . $sql, true);
        	}
	        if (!empty($error))
	        {
				if ($this->Debug)
	        	{
	            	Debug::Mostrar("Se ha producido un error en una consulta a la Base de Datos - Error 1: Insertar()<br><br>".$sql."<br><br>".$error);
	        	}
	        	return 0;
			}
        } elseif ($this->Debug) {
            Debug::Mostrar("No se han podido recibir los datos a guardar, verifiquelos - Error: Insertar()<br>".$sql);
        } else {
        	return 0;
		}
        return 1;
    }
    function MostrarMapeoDatos($H, $lista_no_mapeados)
	{
		echo "<table><tr><td valign=\"top\"><pre>Campos {\n";
		$j = 0;
		$num = array();
		foreach($this->Campos as $key => $valor)
		{
			$campo = $key;
        	if (is_numeric($key))
			{
        		$campo = $valor;
        	}
        	$num[$campo] = $j;
        	if (isset($lista_no_mapeados[$key]))
			{
        		echo "	<strong style=\"color: #F00;\">($j) [".$key."] => ".$valor."</strong>";
        	} else {
        		echo "	($j) [".$key."] => ".$valor;
			}
			echo "\n";
        	$j++;
		}
		echo "}\n</pre></td>";

		$validos;

		echo "<td valign=\"top\"><pre>Datos {\n";
		foreach($H as $key => $valor)
		{
    		echo "	(".$num[$key].") [".$key."] => ".$valor;
			echo "\n";
		}
		echo "}\n</pre></td></tr></table>";
    }
}
?>